package IO;

import java.io.File;
import java.util.Scanner;

public class IO_Demo13 {
    public static void main(String[] args) {
/*//        查找硬盘上的文件位置
*   给定一个文件名,去指定的目录中进行搜索
*   找到文件名匹配的结果,并打印出完整的路径*/
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入要搜索的文件名: ");
        String fileName = scanner.next();
        System.out.println("请输入要搜索的目录: ");
        String rootPath = scanner.next();
        File rootFile = new File(rootPath);
        if (!rootFile.isDirectory()){
            System.out.println("输入的路径有误!");
            return ;
        }

        /* 有了要搜索的路径之后 就可以按照 递归 的方式来搜索
        *    知道了递归的起点,还需要知道要查询的文件名*/
        scanDir(rootFile,fileName);
    }
    public static void scanDir(File rootFile,String fileName){
        File[] files = rootFile.listFiles();
        if (files == null){
//            空目录 直接返回即可
            return;
        }
//        2.便利上述 files,判定每一个 file 是目录还是文件
        for (File f : files){
            if (f.isFile()){
//                普通文件,判定文件名是否是要搜索的文件
                if (fileName.equals(f.getName())){
                    System.out.println("找到了符合要求的文件! "+f.getAbsolutePath());
                }
            } else if (f.isDirectory()) {
//                目录文件,需要进一步的递归
                scanDir(f,fileName);
            }else {
//                这个else暂时不需要
                ;
            }
        }
    }
}
